Off-line log system

ABSTRACT

Introduced are systems and methods that enable modification of logs in multiple off-line databases. Multiple off-line devices can mistakenly associate different respondents with the same identification (ID) unique to the system. When the multiple off-line devices synchronize with each other, or synchronize with a server hosting the central database, the software running on the off-line devices, or on the server detects that the modified logs come from different respondents, and the software assigns two different IDs unique to system to the logs. In another embodiment, multiple off-line devices can mistakenly associate the same respondent with two different IDs unique to the system. When the multiple off-line devices synchronize with each other or with the server, the software running on the off-line devices, or the server detects that the modified logs come from the same respondent, and the software assigns the logs to the same ID unique to system.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to the U.S. provisional patentapplication Ser. No. 62/572,660 filed Oct. 16, 2017, and U.S.provisional patent application Ser. No. 62/526,151 filed Jun. 28, 2017which are incorporated herein by this reference in their entirety.

TECHNICAL FIELD

The present application is related to mobile databases, and morespecifically to methods and systems that enable off-line editing andcreation of logs in a database.

BACKGROUND

Mobile databases today enable multiple mobile devices to downloadinformation from a central database, and access this information whenthe mobile devices are off-line, i.e., the mobile devices cannot accessthe central database. However, the off-line mobile devices cannot modifythe downloaded information, such as edit existing logs or create newlogs because such modification increases the chances that the centraldatabase will not be able to correctly synchronize the newly modifiedinformation, once the multiple mobile devices come online.

SUMMARY

Introduced here are systems and methods that enable modification of logsin multiple off-line databases spread across multiple off-line devices.In one embodiment, multiple off-line devices can mistakenly associatedifferent respondents with the same identification (ID) unique to thesystem. When the multiple off-line devices synchronize with each other,or synchronize with a server hosting the central database, the softwarerunning on the off-line devices, or on the server detects that themodified logs come from different respondents, and the software assignsthe logs to two different IDs unique to system.

In another embodiment, multiple off-line devices can mistakenlyassociate the same respondent with two different IDs unique to thesystem. Similarly, when the multiple off-line devices synchronize witheach other, or with the server, the software running on the off-linedevices, or on the server detects that the modified logs come from thesame respondent, and the software assigns the logs to the same ID uniqueto system. Additionally, modification of off-line databases includescreation and editing of parent logs that have dependent logs. When avalue of the parent log has been modified, the system automaticallydetects that the dependent logs should be modified as well, and notifiesthe user.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other objects, features and characteristics of the presentembodiments will become more apparent to those skilled in the art from astudy of the following detailed description in conjunction with theappended claims and drawings, all of which form a part of thisspecification. While the accompanying drawings include illustrations ofvarious embodiments, the drawings are not intended to limit the claimedsubject matter.

FIG. 1 is a system for maintaining a central database associated with aserver using a plurality of off-line databases associated with aplurality of off-line devices.

FIG. 2 shows contents of a project stored in a database.

FIG. 3 shows an initialized project displayed on a device.

FIG. 4 is an enrollment form associated with the project.

FIG. 5 shows the filled out enrollment form.

FIG. 6 shows a user interface enabling a user to add additional recordsto an existing entry form.

FIG. 7 shows a multiple entry form associated with the enrollment form.

FIG. 8 shows a project containing a completed enrollment form.

FIG. 9 shows information exchanged between two devices and a server.

FIG. 10 shows state of the devices after losing connection to thenetwork 150.

FIG. 11 shows states of the devices and server after application gainsconnection to the network.

FIG. 12 shows states of the devices and server after one applicationloses connection to the network, and another application gainsconnection to the network.

FIG. 13 shows states of the devices and server after applications loseconnection to the network.

FIG. 14 shows states of the devices and server after applications gainconnection to the network.

FIG. 15 shows the two devices communicating with each other over apeer-to-peer network.

FIG. 16 shows creation and editing of dependent logs.

FIG. 17 is a flowchart of a method to maintain a central databaseassociated with a server using a plurality of off-line databasesassociated with a plurality of off-line devices.

FIG. 18 is a flowchart of a method to maintain a central databaseassociated with a server using a plurality of off-line databasesassociated with a plurality of off-line device.

FIG. 19 is a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologies ormodules discussed herein, may be executed.

DETAILED DESCRIPTION Terminology

Brief definitions of terms, abbreviations, and phrases used throughoutthis application are given below.

Reference in this specification to “database” includes a flat database,relational database, a hierarchical database, risk database, nesteddatabase, etc.

Reference in this specification to “log” includes enrollment form,enrollment record, multiple entry form, and/or longitudinal record.

Reference in this specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the disclosure. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed that may be exhibited by some embodiments and not by others.Similarly, various requirements are described that may be requirementsfor some embodiments but not others.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof, means any connection or coupling,either direct or indirect, between two or more elements. The coupling orconnection between the elements can be physical, logical, or acombination thereof. For example, two devices may be coupled directly,or via one or more intermediary channels or devices. As another example,devices may be coupled in such a way that information can be passedthere between, while not sharing any physical connection with oneanother. Additionally, the words “herein,” “above,” “below,” and wordsof similar import, when used in this application, shall refer to thisapplication as a whole and not to any particular portions of thisapplication. Where the context permits, words in the DetailedDescription using the singular or plural number may also include theplural or singular number respectively. The word “or,” in reference to alist of two or more items, covers all of the following interpretationsof the word: any of the items in the list, all of the items in the list,and any combination of the items in the list.

If the specification states a component or feature “may,” “can,”“could,” or “might” be included or have a characteristic, thatparticular component or feature is not required to be included or havethe characteristic.

The term “module” refers broadly to software, hardware, or firmwarecomponents (or any combination thereof). Modules are typicallyfunctional components that can generate useful data or another outputusing specified input(s). A module may or may not be self-contained. Anapplication program (also called an “application”) may include one ormore modules, or a module may include one or more application programs.

The terminology used in the Detailed Description is intended to beinterpreted in its broadest reasonable manner, even though it is beingused in conjunction with certain examples. The terms used in thisspecification generally have their ordinary meanings in the art, withinthe context of the disclosure, and in the specific context where eachterm is used. For convenience, certain terms may be highlighted, forexample using capitalization, italics, and/or quotation marks. The useof highlighting has no influence on the scope and meaning of a term; thescope and meaning of a term is the same, in the same context, whether ornot it is highlighted. It will be appreciated that the same element canbe described in more than one way.

Consequently, alternative language and synonyms may be used for any oneor more of the terms discussed herein, but special significance is notto be placed upon whether or not a term is elaborated or discussedherein. A recital of one or more synonyms does not exclude the use ofother synonyms. The use of examples anywhere in this specification,including examples of any terms discussed herein, is illustrative onlyand is not intended to further limit the scope and meaning of thedisclosure or of any exemplified term. Likewise, the disclosure is notlimited to various embodiments given in this specification.

Off-Line Record System

Introduced here are systems and methods that enable modification of logsin multiple off-line databases spread across multiple off-line devices.In one embodiment, multiple off-line devices can mistakenly associatedifferent respondents with the same identification (ID) unique to thesystem. When the multiple off-line devices synchronize with each other,or synchronize with a server hosting the central database, the softwarerunning on the off-line devices, or on the server detects that themodified logs come from different respondents, and the software assignsthe logs to two different IDs unique to system.

In another embodiment, multiple off-line devices can mistakenlyassociate the same respondent with two different IDs unique to thesystem. Similarly, when the multiple off-line devices synchronize witheach other, or with the server, the software running on the off-linedevices, or on the server detects that the modified logs come from thesame respondent, and the software assigns the logs to the same ID uniqueto system. Additionally, modification of off-line databases includescreation and editing of parent logs that have dependent logs. When avalue of the parent log has been modified, the system automaticallydetects that the dependent logs should be modified as well, and notifiesthe user.

FIG. 1 is a system for preventing corruption of a central databaseassociated with a server 102 using multiple off-line databases (i.e.intermittently online databases) associated with multiple off-linedevices 112, 122, 132.

A technical problem arising in the context of intermittently onlinedatabases synchronizing with the central database is corruption of thecentral database. Corruption of the central database can be done bycreating duplicate logs for the same respondent, or creating same logfor different respondents. A log can be enrollment form, enrollmentrecord, longitudinal record, and/multiple entry form. The technicalsolution presented in this application increases the accuracy of thecentral database, by preventing corruption of the central database, andenables the creation and maintenance of the central database along withmultiple intermittently online databases.

The system includes multiple off-line devices 112, 122, 132 which runsoftware 115, 125, 135 for managing off-line databases 110, 120, 130, anonline device (“server”) 102 which runs a server software 105 formanaging a central database 100, a communication network such as theInternet 150, and/or a peer to peer network 140. The server 102 storingthe central database 100 can be one or more Internet nodes, servers, acloud, fixed terminals, stations, units, devices, multimedia computers,desktop computers, laptop computers, notebook computers, netbookcomputers, tablet computers, etc., or any combination thereof.

The devices 112, 122, 132 associated with the software 115, 125, 135,and the databases 110, 120, 130 can be any type of device such as mobileterminal, fixed terminal, or portable terminal including a cell phone, atablet, a watch, personal digital assistant, etc. The devices 112, 122,132 can gain and lose access to the Internet, and thus have onlyintermittent access to the central database 100. The software 115, 125,135, and the off-line databases 110, 120, 130 can communicate with eachother using the peer-to-peer network 140. The peer-to-peer network 140can be connected to the Internet, but does not have to be. Thepeer-to-peer network 140 can be a local area network, metropolitan areanetwork, a wide area network, or any other suitable packet-switchednetwork. The peer-to-peer network 140 can be a mesh network, can use ashort range wireless protocol, such as a Bluetooth protocol, and/or canbe a cellular network.

The software 115, 125, 135, and the off-line databases 110, 120, 130 cancommunicate with each other using the peer-to-peer network 140 withouthaving a direct access to the Internet 150, and the central database100. For example, when devices 112, 122 are within 10 m of each otherand have the software 115, 125 running, the two off-line databases 110,120 can exchange the data contained in the two databases 110, 120.

When one of the off-line databases, such as databases 120, 130 gainsaccess to the Internet 150, the temporarily online database 120, 130transmits all of the data contained in the database 120, 130 to thecentral database 100. If the off-line database 110 has encountered oneof the databases 120, 130 previously, and transmitted data from theoff-line database 110, the data contained in the off-line database 110can reach the central database 100, even if the off-line database 110never connects to the Internet 150.

Databases 100, 110, 120, 130 are third party software that stores thedata objects in persistent storage and retrieves data objects fromstorage, in response to requests made by the software 105, 115, 125,135. Various objects may be stored in various databases for reasons suchas speed, cost, reliability, or capacity. Database 100, 110 120, 130 maybe a flat database, a relational database, a hierarchical database, anested database, a risk database, or other type of database.

Server software 105 manages the database 100 and communicates with themobile software applications 115, 125, 135 to send and receive newrecords and modifications. A single server software 105 manages manyprojects, forms, and responses, and serves many mobile softwareapplications 115, 125, 135 and users. The server software 105 handlesauthentication and then grants access to a subset of the projects,forms, and records according to the access granted to the user. Theserver software 105 enforces that the relationships between data objectsstored in database 100 are valid, that logs are associated with correctIDs unique to the whole system, and that the contents of each dataobject is valid. The server software 105 can store data objects in oneor more databases 100. The server software 105 may encrypt data objectsbefore storage. The server software 105 may actually consist of manypieces of software running on many computers that together carry outthese functions (for reasons including speed, cost, reliability, orcapacity).

Software 115, 125, 135 has a user interface and can run on a mobiledevice 112, 122, 132, such as a smartphone or tablet. Software 115, 125,135 can be a mobile device software application. The software 115, 125,135 can be used by data collectors. Software features include creationof new enrollment records by completing an enrollment form, creation ofnew longitudinal records by choosing an existing enrollment form andcompleting a multiple-entry form, modification of existing records,viewing of records, and searching for records. New records andmodifications are stored on the device 112, 122, 132.

The software 115, 125, 135 communicates with the server software 105over a network 150 (for example the internet). When communication to theserver is possible, i.e., the devices 112, 122, 132 are “online”, newrecords and edits are transmitted to the server software 105, and therecords and edits that are not yet on the device 112, 122, 132 arereceived from the server. Forms are also received from the serversoftware 105 and stored on the device 112, 122, 132. The software 115,125, 135 may encrypt records before storage and/or transmission. Usersmust authenticate with the server software 105 to use the software 115,125, 135 and thereafter may continue to use the software 115, 125, 135when offline.

FIG. 2 shows contents of a project stored in any of the databases 100,110, 120, 130 in FIG. 1. A project 200 contains one or more logs enteredby a user. The log can be an enrollment form 210, an enrollment record220, 225, a longitudinal record 230, 235, 237, a multiple entry form240, 245. Project 200 contains the logs and isolates them from projectswith a different purpose or by a different user. The system supportssimultaneous projects on the same server and off-line devices. Each userof the system authenticates to gain access to projects and then choosesthe project to collect data for.

A form such as the enrollment form 210, or a multiple entry form 240,245 defines the data that may be collected, including fields, fieldtypes, field categories, a collection order, and conditional logic. Eachproject 200 contains one or more enrollment forms 210 and one or moremultiple-entry forms 240, 245. Each multiple-entry form 240, 245 isassociated with one enrollment form 210, which is known as the parentform. Multiple entry forms 240, 245 contain links 242, 244 to the parentenrollment form 210. Multiple entry forms 240, 245 define the queriesasked every time the user opens the enrollment form 210 and/or therecord 220.

The enrollment form 210 contains at least two identifications (IDs), anactive ID 250, and a passive ID 260. The active ID 250 can be entered bythe user and can include any form, record, or field associated with therespondent, such as a name, an identification number, region of origin,favorite color, etc. The active ID 250 can vary over time, and cancontain conditional elements. The active ID 250 may or may not be uniqueto the device in which the active ID 250 is entered, or to whole system.The passive ID 260 can be generated by the server 102, or by the devices112, 122, 132. The passive ID 260 is unique to the device in which isentered, and to the whole system.

A record such as the enrollment record 220, 225, or a longitudinalrecord 230, 235, 237 contains data collected to satisfy the form 210,240, 245, including field values and metadata. Each record 220, 225,230, 235, 237 is associated with one form 210, 240, 245. An enrollmentrecord 220, 225 is associated with an enrollment form 210 through links222, 224, while the longitudinal record 230, 235, 237 is associated witha multiple-entry form 240, 245 through links 232, 234. Each longitudinalrecord 230, 235, 237 is associated with an enrollment record 220, 225through links 236, 238. The enrollment record 220, 225 is known as theparent record, such that the enrollment form 210 of the parent record220, 225 is the parent form of the multiple-entry form 240, 245 of thelongitudinal record 230, 235, 237.

An enrollment record 220, 225 is a collection of data at a single pointin time for a particular respondent, i.e., subject or item of interest.

A longitudinal record 230, 235, 237 is a collection of enrollmentrecords 220, 225 over time on the same respondent, i.e., subject or itemof interest. The longitudinal records 230, 235, 237 can thus be used totrack changes over time. Longitudinal records 230, 235, 237 are anexample of a timeseries. For example, the longitudinal record 230, 235,237 can contain medical vital signs collected hourly for each patient.In this case, the patient is the respondent. In another example, thelongitudinal record 230, 235, 237 can include structural conditioncollected annually for each building. In this case, the building is therespondent. In a third example, the longitudinal record 230, 235, 237can include resident data collected occasionally for each household. Inthis case, the household is the respondent.

The user, i.e., a data collector using the software 115, 125, 135 inFIG. 1 on a mobile device 112, 122, 132 in FIG. 1, enrolls a newrespondent by completing an enrollment form 210, which results in anenrollment record 220, 225. The new enrollment record 220, 225 is storedon the mobile device 112. The mobile device 112, 122, 132 is offline,which means it is not connected to a network through which the software115, 125, 135 can communicate with the server software 105 in FIG. 1.The same user may complete a multiple-entry form to collect alongitudinal record for the subject. This process can be repeated tocollect more enrollment records 220, 225, which when collected over atleast two time points for the same respondent, become longitudinalrecords 230, 235, 237.

The device 112, 122, 132 can become a server, which means that thedevice 112, 122, 132 is connected to a network through which it cancommunicate with the server 102. The software 115, 125, 135 in FIG. 1detects that the device 112, 122, 132, respectively, has come online andtransmits the data contained in the database 110, 120, 130, such as theenrollment record 220, 225 and longitudinal record(s) 230, 235, 237 tothe server 102. The server 102 transmits to the device 112, 122, 132 anydata such as enrollment records 220, 225 and longitudinal records 230,235, 237 that are not on the device 112, 122, 132.

Other users using the software 115, 125, 135 on other devices 112, 122,132 that can access the server 102, can receive the enrollment andlongitudinal records 220, 225, 230, 235, 237 from the server software105. Those users can then complete multiple-entry forms 240, 245 tocollect more longitudinal records 230, 235, 237 for the same respondentas described above. In other words, multiple users of the software 115,125, 135 can collect and enter data for the same respondent,simultaneously, or at different points in time.

FIG. 3 shows an initialized project displayed on a device 112, 122, 132in FIG. 1. Initialized project 300 contains a title 310, but does notcontain any records until a user enters respondent data. The project 300can be initialized on the device 112, 122, 132 and/or the server 102 inFIG. 1, and transmitted to the device 112, 122, 132.

FIG. 4 is an enrollment form associated with the project 300 in FIG. 3.The enrollment form 400 contains multiple enrollment records 410, 420,430, 440, 450, 460. Each of the enrollment records 410, 420, 430, 440,450, 460 can contain longitudinal records, i.e., multiple enrollmentrecords at various points in time. Each enrollment record contains aquery 422 (only one labeled for brevity) and can contain a list ofpossible answers 432 (only one labeled for brevity). Each enrollmentrecord 410, 420, 430, 440, 450, 460 can be an active ID, entered by theuser. Subsequently, the user that created the enrollment form 400, oranother user that has access to the enrollment form 400, can search forthe enrollment form 400 using any of the enrollment records 410, 420,430, 440, 450, 460. The device 112, 122, 132 in FIG. 2 stores theinformation entered into the enrollment form 500.

In addition, the device 112, 122, 132 in FIG. 2 stores automaticallygathered data such as: time when the log (e.g., enrollment form and therecords and forms within the enrollment form) are created, locationwhere the data was gathered, the time at which the log was initiallyopened, the time at which the log was completed, respondent's identity,the project's ID, etc. Using the automatically gathered data, such asthe time when the law was initially opened and/or the time at which thelog was completed, the device 112, 122, 132 can create a timeseries ofmultiple answers recorded over a period of time.

FIG. 5 shows the filled out enrollment form. Enrollment form 500 is thefilled out enrollment form 400 in FIG. 4. The identifier 510 is theactive ID, entered by the user. The identifier 510 can be obtained by,for example, scanning in a barcode ID attached to a parcel or to apatient. In another example, the identifier 510 can be assigned by theuser. The device 112, 122, 132 in FIG. 1 stores a log, that is, theenrollment form 500, and the records contained in the enrollment form500. In addition, the device 112, 122, 132 stores a time when the logsare created, and a time variability associated with the logs, in thedatabase 110, 120, 130, respectively.

The time variability specifies the period of time during which the logis expected to remain unchanged. For example, log 510—ID, log 540—name,and log 560—gender, can have extremely high time variability such asmaximum integer associated with the software 115, 125, 135 in FIG. 1,because the identification and the name of a person are not expected tochange. Log 580—occupation can have a shorter time variability such as10 years, because a person's occupation can change. Log 550—country oforigin can have a time variability of 5 years. Log 570—age has a timevariability of one year, because a person's age changes every year. Thetime variability of the record can be supplied by the user, orautomatically determined based on the respondent's prior history, orprior history of respondents similar to the current respondent. Similarrespondents can be people from the same geographical region, or parcelshaving the same source and destination, etc.

Subsequently, when the user that created the enrollment form 500, oranother user that has access to the enrollment form 500, wants to findthe enrollment form 500, the user can enter the value 520 of theidentifier 510, or the user can enter the value 530 of the log 540,e.g., the name of the respondent. If there are multiple logs matchingthe entered value within the database 110, 120, 130 in FIG. 1, thesoftware 115, 125, 135 in FIG. 1 can display all the logs matching theentered value stored within the database 110, 120, 130, respectively. Byexamining additional records associated with the logs, the user candisambiguate between multiple matching logs, and select a single log asthe desired log.

FIG. 6 shows a user interface enabling a user to add additional recordsto an existing entry form. User interface element 600 shows informationregarding the enrollment form 500 in FIG. 5, that the user can edit. Theuser interface elements 600 can show information regarding theenrollment form 500, such as the title of the project and the ID of therespondent. By selecting user interface element 610, the user can addadditional logs to the enrollment form 500.

FIG. 7 shows a multiple entry form associated with the enrollment form500 in FIG. 5. The multiple entry form 700 contains multiple records710, 720, 730. Each record contains a question, and can contain apossible list of answers. A timeseries of the answers to the questionsordered by time of entry forms a longitudinal record.

The device 112, 122, 132 in FIG. 1 stores a log, that is, the multipleentry form 700 and the records 710, 720, 730 contained in the multipleentry form 700. In addition, the device 112, 122, 132 stores a time whenthe logs are created, and a time variability associated with the logs,in the database 110, 120, 130, respectively.

The time variability specifies the period of time during which the logis expected to remain unchanged. For example, log 710—day of the weekhas a time variability of one day, because day of the week changesdaily. Log 720—menu can have a time variability of the week. The timevariability of the log 720 can be obtained by querying the restaurant onhow frequently the menu is changed. Log 730—reasons for meal selectioncan have a time variability of 3 hours. The time variability of therecord can be supplied by the user, or automatically determined based onthe respondent's prior history, or prior history of respondents similarto the current respondent. Similar respondents can be people from thesame geographical region, or parcels having the same source anddestination, etc. Logs with longer time variability are better IDs thanlogs with a shorter time variability.

FIG. 8 shows a project containing a completed enrollment form. Thedatabase 110, 120, 130 in FIG. 1 stores the project 850 containing thecompleted enrollment form 800 along with an indication 810 of a time theenrollment form 800 was created, an indication 820 of the last time theenrollment form 800 was edited, and an indication 830 of whether theupdated enrollment form 800 has been uploaded to the central database100. Through the user interface element 840, the user can add a new log,such as a new enrollment form, new enrollment record, and/or a newmultiple entry form to the project 850 and/or the enrollment form 800.

FIG. 9 shows information exchanged between two devices and a server. Theserver software 105 running on the server 102 and multiple mobilesoftware applications 915, 935 running on mobile devices 920, 940 canexchange information between each other over the network 150. The server102 contains many projects, including project 900 which containsenrollment form E1 and multiple entry form F1.

Initially, software applications 915, 935 are online and a user entersauthentication credentials on each. The software application 915, 935confirms authentication against the server software 105, and begins anauthenticated session. The server software 105 determines that each userhas access to project 900, and transmits E1 and F1 to softwareapplications 915, 935.

FIG. 10 shows state of the devices 920, 940 after losing connection tothe network 150. Even after the software applications 915, 935 loseconnection to the network, the applications 915, 935 allow the user tocontinue use of the applications 915, 935 based on the lastauthentication. Additionally, the applications 915, 935 allow users toadd new records, edit existing records in the databases 910, 930 etc.,when the mobile devices 920, 940 are fully off-line. For example, theuser completes form E1 in application 915, producing enrollment recordR1. The user then completes F1, selecting R1 as the parent, producinglongitudinal record L1. The user completes form E1 in application 915,producing enrollment record R2. When the user adds a new record, thesoftware applications 915, 935 inputs a new relational schema set objectwhich creates a new row and column across several tables. When the useradds to an existing record, the software applications 915, 935 inputsnew relational schema set object to an existing schema set object byediting a row and column across several tables.

FIG. 11 shows states of the devices 920, 940 and server 102 afterapplication 915 gains connection to the network 150. After application915 comes online, the application 915 transmits R1 and L1 to server 102.The central database 100 now contains enrollment form E1, multiple entryform F1, along with the enrollment record R1 and the longitudinal recordL1.

FIG. 12 shows states of the devices 920, 940 and server 102 afterapplication 915 loses connection to the network 150, and application 935gains connection to the network 150. Software application 915 becomesoffline and software application 935 becomes online. Softwareapplication 935 transmits R2 to server 102 and server 102 transmits R1and L1 to software application 935.

FIG. 13 shows states of the devices 920, 940, and server 102 afterapplications 915, 935 lose connection to the network 150. Application935 becomes offline. Now in application 915, the user completes F1,selecting R1 as the parent, producing longitudinal record L2. Meanwhilein application 935, the user completes F1, selecting R1 as the parent,producing longitudinal record L3. Both users are adding a longitudinalrecord to the same enrollment record, when both of the devices 920, 940are off-line.

The databases 910, 930 store the time at which records L2 and L3 havebeen recorded, so that when the databases 910, 930 are synchronized, therecords L2, L3 can be ordered according to the time at which they wererecorded. The users have added longitudinal records L2, L3 to anexisting record R1. The applications 915, 935 input new relationalschema set object for time of edit, while the pre-edited responsevariables across multiple schemas remain in place from previous timeperiods, thus preserving all the previously entered data without a riskof overwriting and/or deleting the older data.

FIG. 14 shows states of the devices 920, 940, and server 102 afterapplications 915, 935 gain connection to the network 150. Bothapplications 915, 935 become online. Application 915 transmits L2 to theserver 102. Application 935 transmits L3 to the server 102. The serversoftware 105 arranges the received records L2 and L3 according to thetimestamps received from the applications 915, 935, respectively.

The server 102 then transmits L2 to application 935 and R2 and L3 toapplication 915. Both devices 920, 940 now contain the same records.Collection and transmission continues in the same way as records arecreated and modified and each application 915, 935 alternates betweenoffline and online.

FIG. 15 shows the two devices 920, 940 communicating with each otherover a peer-to-peer network. Even when the communication over thenetwork 150 with the server 102 cannot be established, the two devices920, 940 can communicate directly with each other using a peer-to-peernetwork such as a mesh network, cellular network, short range networksuch as Bluetooth, etc. The devices 920, 940 need to be within 10 m ofphysical proximity and have the applications 915, 935 running,respectively.

For example, the user of the device 920, at time T1, capturesinformation from respondent (person, parcel, etc.) once or in series.The device 920, at time T1, stores information across relevant tables inthe offline application-enabled relational database 910. The user, attime T2, can view all records across application when user encountersusers of other devices 940 who have been using the same application 935with the same permissions. User devices 920, 940 must be within 10 m ofphysical proximity and have applications 915, 935 running. The device920, at time T2, shares information with permission-enabled devices 940within 10 m radius (with applications 915, 935 running) passively andautomatically when proximity has been breached. In the present case,device 920 sends records L2 to device 940, while device 940 sendsrecords R2, L3 to device 920.

In another example, each project 900 within the application 915, 935 hasa unique security key that is used to encrypt responses so that they canbecome a part of the mesh fabric.

Device 920 collects responses on project 950. Device 920 encountersdevice 940 that has access to project 900, and no access to project 950.Device 920 transmits responses L2 encrypted with the project 900 key,and responses E10, F10, R10 encrypted with the project 950 key to device940. Device 940 can decrypt project 900 responses, but cannot decryptproject 950 responses. Device 940 shares responses to project 900 withdevice 920, which device 920 can decrypt.

Device 940 encounters device 960, and the two devices 940, 960synchronize. Device 960 gets encrypted responses from project 900 andproject 950. Since device 960 has access to project 950, device 960 isable to decrypt and use responses E10, F10, R10. Device 960 does nothave access to project 900, and responses E1, F1, R1, R2, L1, L2, L3remain encrypted on the device 960.

FIG. 16 shows creation and editing of dependent logs. A log can be anentry form, a multiple entry form, enrollment record, longitudinalrecord, etc. An entry form 1600 contains multiple records pertaining tovarious respondent attributes. Parent log 1610 has a dependent log 1620,where the value of the dependent log 1620 depends on the value of theparent log 1610.

For example, parent log 1610 can ask for the city of origin ofrespondent. The dependent log 1620 can ask for the respondent's favoritefood, which depends on the respondent city of origin. The dependent log1620 can be pre-populated with likely values based on the value of theparent log 1610. In a more specific example, if the respondent is fromChicago, the respondent's favorite food is likely to be a pizza, a hotdog, a burger. The likely choices for the favorite food can be based onthe data already in the database where the top three choices forfavorite food of people from Chicago are pizza, hot dog, burger.

At time T1, the user enters information of the respondent into the entryform 1600. At time T2, the user enters information of the respondentinto the dependent log 1620. As time T3, the user edits the value of thedependent log 1620, based on changing respondent preferences. The systemstores both the value of dependent log 1620 at time T2, and value of thedependent log 1620 at time T3. At time T4, the user edits the value ofthe parent log 1610 to change the respondent city of origin. The systemautomatically detects that the parent log 1610 has a dependent log 1620,and provides the user with a questionnaire containing most likely valuesfor the dependent log 1620 based on the changed value of the parent log1610. In FIG. 16, the favorite food is updated to show most likelychoices for respondents from Kathmandu. At time T5 the user can selectone of the multiple choice is provided, or can enter a new value. Thesystem stores the values of dependent log 1620 at time T2, T3, and T5,without overwriting any of the values. The timeseries T2, T3, T5 of thedependent log 1620 is an example of a longitudinal record.

In addition, the entry form 1600 contains at least two identifications,1630, 1640. Every log in the system can contain two identifications. Oneidentification (ID) is a passive ID 1630, generated by the system, whilethe other ID is an active ID 1640 provided by the user. The active ID1640 can be entered by the user and can include any form, record, orfield associated with the respondent, such as a name, an identificationnumber, region of origin, favorite color, radio frequency ID, barcodeID, etc. The active ID 1640 can vary over time, and can be the parentlog 1610, such as the city of origin, or the dependent log 1620, such asthe favorite food. The active ID 1640 may or may not be unique to thedevice in which the active ID 1640 is entered, or to whole system.

The passive ID 1630 can be generated by the server 102 in FIG. 1, or bythe devices 112, 122, 132 in FIG. 1. The passive ID 1630 is unique tothe device in which is entered, to the central database 100 in FIG. 1,and to the whole system. To uniquely identify each log across thesystem, the log is assigned a unique passive ID 1630. Since a log can becreated while the device 112, 122, 132 is offline, the server 102 cannotsupply the log ID 1630, nor verify that the ID 1630 is unique. Instead,the log ID 1630 is generated by the mobile application 115, 125, 135 inFIG. 1. The ID 1630 can be a combination of the device ID, the POSIXtime when collection of the log started, and a large random number. Thelarge random number can contain 10 digits or more. The probability oftwo of these log IDs being equal is tiny. The device ID can be of acombination of the POSIX time when the software application 115, 125,135 first started and a large random number.

In another example, a large number of unique IDs, such as 10,000 uniqueIDs, can be assigned to a user logging into the mobile application 115,125, 135. Every time a new respondent is created, or a new log isentered, one of these unique IDs is assigned to the respondent or thelog.

FIG. 17 is a flowchart of a method to prevent corruption of a centraldatabase associated with a server using multiple off-line databasesassociated with multiple off-line devices. In step 1700 a processorsynchronizes multiple off-line databases associated with multipleoff-line devices and a central database associated with a server withoutcorrupting the central database by incorrectly associating a log enteredby a user into an off-line database with an incorrect identification(ID). Corrupting the central database can be done by creating duplicatelogs for the same respondent, or creating same log for differentrespondents. A log can be enrollment form, enrollment record,longitudinal record, and multiple entry form.

To synchronize the databases, in step 1710, the processor maintains atleast two identifications (IDs) associated with the log. The first ID isunique to the central database, and the second ID is provided by theuser, as described in this application. The log can include at least onerecord, and the record can include at least one of a name, an age, agender, a region of origin, a barcode ID, a favorite food, and/or aradio frequency ID. The log entered by the user can be the second ID.

To generate the first ID, the processor can generate a large randomnumber of 10 digits or more. The processor then combines a device ID, atime when collection of the log started, and the large random number.The first ID is a combination of the device ID (which is of acombination of the POSIX time when the database was initiated on thedevice with a large random number), the POSIX time when collection ofthe record started, and a large random number. The probability of two ofthese record IDS being equal is tiny.

To synchronize the databases, in step 1720, the processor records atimeseries of the log including a modification to the log at a point intime, and the point in time at which the modification to the log wasmade. In step 1730, the processor determines a correct ID unique to thecentral database to associate with the log by comparing a timevariability of the log specifying the period of time during which thelog is expected to remain unchanged, the timeseries of the log and datacontained in the central database.

To determine the correct ID, the processor can create a new respondentwhen two different respondents have mistakenly been recorded in the samelog. The log can include multiple records, such as a timeseries oflongitudinal records. To determine the correct ID unique to the centraldatabase the processor can retrieve from a second off-line database asecond log associated with the first ID. The second log includes asecond multiplicity of records, that should be associated with adifferent ID. The second off-line database can be the central databaseor a second off-line database. Based on the multiple records, theprocessor formulates a criterion indicating whether the log and thesecond log are the same, and should be associated with the same ID. Bycomparing the multiple records of the log and the second log, theprocessor determines that the criterion is not satisfied, which meansthat the log and the second log should be associated with different IDs.Finally, the processor associates the log with a third ID unique to thecentral database. The third ID is the correct ID unique to the centraldatabase, and the third ID and the first ID are different.

To formulate the criterion, the processor creates a prioritized list ofrecords. The prioritized list of records is created based on themultiple records and a time variability associated with each record inthe multiple records, such that a record least likely to change overtime is at the top of the prioritized list of records. For example,gender of the respondent can be at the top of the list because gender ofthe respondent tends not to change with time, followed by country oforigin because country of origin changes infrequently, followed by ageof the respondent because the age changes once a year, followed byfavorite food changes because favorite food can change monthly. Theprocessor can formulate the criterion to state that when at least onerecord at the top of the prioritized list is different between the logand the second log, the log and the second log are different. Forexample, the criterion can state if the gender of the two respondents isdifferent, the two respondents are different.

To determine the correct ID the processor can recognize that twodifferent IDs are associated with the same respondent, and combine thetwo different IDs into a single ID. The log can include multiplerecords. The processor retrieves from a second off-line database asecond log associated with a third ID, the second log including a secondmultiplicity of records. Based on the multiple records, the processorformulates a criterion indicating that the log and the second log arethe same. Upon determining that the criterion is satisfied, i.e., thatthe log and the second log belong with the same respondent, theprocessor associates the log and the second log with the same ID. Thesame ID can be the first ID unique to the central database.

To formulate the criterion, the processor determines that a record inthe multiple records and a corresponding record in the secondmultiplicity of records correspond to each other. To determine thecorrespondence, the processor can determine that the record and thecorresponding record ask the same question of the respondent. Thecorrespondence between the multiple records and the second multiplicityof records can be one-to-one, or a certain percentage of the recordsmatch, such as 60% of the records. The processor determines a timevariability associated with the record in the multiple records and thecorresponding record in the second multiplicity of records. The timevariability specifies a time period during which the record and thecorresponding record are expected to remain unchanged. For example, nameof the respondent can be at the top of the list because name of therespondent tends not to change with time, followed by gender of therespondents because gender tends not to change over time, followed bycountry of origin because country of origin changes infrequently,followed by age of the respondent because the age changes once a year,followed by favorite movie changes because favorite movie can changemonthly, followed by blood pressure because blood pressure can changehourly. The processor can retrieve a time when the record was enteredand a second time when the corresponding record was entered. Theprocessor formulates the criterion to state that when a predeterminednumber of records between the multiple of records and the secondmultiplicity of records match, the log and the second log are the same.

To determine that the criterion is satisfied, the processor candetermine that the time when the record was entered and the second timewhen the corresponding record was entered are within the time periodduring which the record and the corresponding record are expected toremain unchanged. The processor can sum all the records that match, andif at least 90% of the records match, the first and the secondcorrespondent are the same. For example, if the name, the gender, andcountry of origin are the same, the age of the two respondents was takenwithin 6 months of each other and the age is the same, and the favoritemovie of the two respondents was taken within two weeks of each otherand is the same, the two respondents are the same.

When the processor of a device, which can be either online, or off-line,detects a presence of a second device within 10 m, the devicesynchronizes the database on the device with a second database on thesecond device. To synchronize, the device receives encrypted multiplerecords from the second database. Upon determining that the userassociated with the device has access to the encrypted multiple records,the processor decrypts the encrypted second multiplicity of records, andsynchronizes the multiple records with the database.

When the processor of the device detects an availability of an Internetconnection, the processor synchronizes a database on the device with thecentral database. The Internet connection can include mesh network,Wi-Fi, cellular network, LAN, etc.

To synchronize modifications to the same longitudinal record, i.e.,timeseries, by different devices, the processor receives from at leasttwo off-line databases multiple modifications to the log. Thenotification to the log can include a value and a time at which thevalue was entered. The processor records the timeseries of the log,which orders multiple modifications to the log from oldest to mostrecent.

The processor can automatically correct data entered by the user. Forexample, the processor can smooth out high-frequency log values enteredby the user by performing a low-pass filter on the timeseries of thelog. In addition to, or alternatively, the processor can correct thetimeseries of the log by analyzing changes in the log over time, andremove a value of an abnormal log significantly different from values ofthe abnormal log's temporal neighbors. Temporal neighbors can be valuessurrounding the abnormal log value over one or more time periods.

FIG. 18 is a flowchart of a method to prevent corruption of a centraldatabase associated with a server using multiple off-line databasesassociated with multiple off-line devices. In step 1800, processorassociated with a device modifies a log in an off-line database in themultiple off-line databases. The modifying can include creating a newlog in the off-line database or editing an existing log in the off-linedatabase. Log can be enrollment form, enrollment record, multiple entry,and/or longitudinal record. The log can include at least one record,such as of a name, an age, a gender, a region of origin, a favoritemovie, a barcode ID, and/or a radio frequency ID.

In step 1810, the processor stores in the off-line database a timeseriesof the log comprising a modified value of the log, a time said modifyingoccurred, and a first identification (ID) unique to the centraldatabase. To generate the ID, the processor generates a large randomnumber and combines a device ID, a time when collection of the logstarted, and the large random number. The device ID is of a combinationof the POSIX time when the software application first started and alarge random number.

In step 1820, the processor synchronizes the log with a differentdatabase, which can be the central database or a second off-linedatabase. The different database can include a second timeseries.

In step 1830, the processor determines a correct ID unique to theoff-line database and the different database to associate with the logby comparing a time variability of the log specifying the period of timeduring which the log is expected to remain unchanged, the timeseries ofthe log and/or a second timeseries associated with the differentdatabase. The correct ID can be the first ID.

Modification of the log can include editing an existing record in theoff-line database. The existing record can have a dependent record whosevalue varies based on the existing record. Once the existing record isupdated, the processor automatically offers to the user to update thedependent record. The processor can automatically create a questionnaireincluding a list of likely values for the dependent record to present tothe user. Alternatively, the list of likely values can be specified bythe user. To automatically create the questionnaire, the processor canretrieve from the off-line database and/or the central database multiplemost popular values associated with the dependent record.

For example, when the region of origin changes from United States toNepal, the processor can automatically present the question to therespondent asking for the respondent's favorite food. The respondentsfavorite food, given that the respondents region of origin is Nepal, canbe momo, noodles, dal bhat. The processor then receives the user enteredresponse to the questionnaire.

Instead of automatically creating the list of likely responses for thedependent record, the processor can provide a notification to the userthat the dependent record needs to be updated.

Modification of the log can include receiving from the user the log toadd to the off-line database and a dependency between the log and adependent log. The processor creates the log and the dependency in theoff-line database. The processor can determine that the value of the login the newly created, or newly designated dependent log are not likelypairs and the processor can automatically create a questionnairecomprising a list of likely values for the dependent log to present tothe user. The processor then receives the user entered response to thequestionnaire.

To assign to the log the correct ID unique to the off-line database, theprocessor can detect when two different respondents are assigned to thesame ID. The log can include multiple records. The processor canretrieve from the different database a second log associated with thefirst ID. The second log includes a second multiplicity of records. Thedifferent database can be the central database or the second off-linedatabase. Based on the multiple records, the processor can formulate acriterion which indicates whether the log and the second log are thesame. Based on the multiple records of the log and the second log theprocessor can determine that the criterion is not satisfied, andassociate the log with a second ID unique to the off-line database andthe different database. The second ID is the correct ID unique to theoff-line database and the different database, and the second ID and thefirst ID are different. The second ID can be a newly utilized ID uniqueto the whole system, or can be an ID already associated with arespondent.

To formulate the criterion, the processor creates a prioritized list ofrecords based on the time variability associated with each record. Therecord least likely to change over time is at the top of the prioritizedlist of records, as described in this application. The processor canformulate the criterion to state that when at least one record at thetop of the prioritized list is different between the log and the secondlog, the log and the second log are different.

To determine the correct ID unique to the off-line database and thedifferent database, the processor can determine when two different IDsare assigned to the same respondent. This determination can be madeafter the processor has corrected an ID which has been associated withtwo different respondents, or the determination can be made in theprocess of synchronizing two databases. The processor retrieves from thedifferent database a third log associated with the second ID. The thirdlog includes a third multiplicity of records. Based on the multiplerecords, the processor formulates a criterion indicating that the logand the third log are the same. After comparing the records of the logand the third log, the processor determines that the criterion issatisfied, i.e., that the two logs belong to the same respondent. Theprocessor associates the log with the second ID unique to the off-linedatabase and the different database.

When the processor of a device, which can be either online, or off-line,detects a presence of a second device within 10 m, the devicesynchronizes the database on the device with a second database on thesecond device. To synchronize, the device receives encrypted multiplerecords from the second database. Upon determining that the userassociated with the device has access to the encrypted multiple records,the processor decrypts the encrypted second multiplicity of records, andsynchronizes the multiple records with the database.

When the processor of the device detects an availability of an Internetconnection, the processor synchronizes a database on the device with thecentral database. The Internet connection can include mesh network,Wi-Fi, cellular network, LAN, etc.

To synchronize modifications to the same longitudinal record, i.e.,timeseries, by different devices, the processor receives from at leasttwo off-line databases multiple modifications to the log. Themodification to the log can include a value and a time at which thevalue was entered. The processor records the timeseries of the log,which orders multiple modifications to the log from oldest to mostrecent.

The processor can automatically correct data entered by the user. Forexample, the processor can smooth out high-frequency log values enteredby the user by performing a low-pass filter on the timeseries of thelog. In addition to, or alternatively, the processor can correct thetimeseries of the log by analyzing changes in the log over time, andremove a value of an abnormal log significantly different from values ofthe abnormal log's temporal neighbors. Temporal neighbors can be valuessurrounding the abnormal log value including one or more time periods.

Computer

FIG. 19 is a diagrammatic representation of a machine in the exampleform of a computer system 1900 within which a set of instructions, forcausing the machine to perform any one or more of the methodologies ormodules discussed herein, may be executed.

In the example of FIG. 19, the computer system 1900 includes aprocessor, memory, non-volatile memory, and an interface device. Variouscommon components (e.g., cache memory) are omitted for illustrativesimplicity. The computer system 1900 is intended to illustrate ahardware device on which any of the components described in the exampleof FIGS. 1-18 (and any other components described in this specification)can be implemented. The computer system 1900 can be of any applicableknown or convenient type. The components of the computer system 1900 canbe coupled together via a bus or through some other known or convenientdevice.

The processor of the computer system 1900 can be the processorassociated with the intermittently online devices 112, 122, 132 in FIG.1, or the server 102 in FIG. 1. The memory, and the nonvolatile memoryof the computer system 1900 can store the databases 100, 110, 120, 130in FIG. 1 on the server 102, and devices 112, 122, 132, respectively.The network interface of the computer system 1900 can be used tocommunicate between the devices 112, 122, 132, and the server 102.Further, the network in FIG. 19 can be a peer-to-peer network, theInternet, cellular network, a Wi-Fi network, Bluetooth network, etc.

This disclosure contemplates the computer system 1900 taking anysuitable physical form. As example and not by way of limitation,computer system 1900 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, or acombination of two or more of these. Where appropriate, computer system1900 may include one or more computer systems 1900; be unitary ordistributed; span multiple locations; span multiple machines; or residein a cloud, which may include one or more cloud components in one ormore networks. Where appropriate, one or more computer systems 1900 mayperform without substantial spatial or temporal limitation one or moresteps of one or more methods described or illustrated herein. As anexample and not by way of limitation, one or more computer systems 1900may perform in real time or in batch mode one or more steps of one ormore methods described or illustrated herein. One or more computersystems 1900 may perform at different times or at different locationsone or more steps of one or more methods described or illustratedherein, where appropriate.

The processor may be, for example, a conventional microprocessor such asan Intel Pentium microprocessor or Motorola power PC microprocessor. Oneof skill in the relevant art will recognize that the terms“machine-readable (storage) medium” or “computer-readable (storage)medium” include any type of device that is accessible by the processor.

The memory is coupled to the processor by, for example, a bus. Thememory can include, by way of example but not limitation, random accessmemory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). Thememory can be local, remote, or distributed.

The bus also couples the processor to the non-volatile memory and driveunit. The non-volatile memory is often a magnetic floppy or hard disk, amagnetic-optical disk, an optical disk, a read-only memory (ROM), suchas a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or anotherform of storage for large amounts of data. Some of this data is oftenwritten, by a direct memory access process, into memory during executionof software in the computer 1900. The non-volatile storage can be local,remote, or distributed. The non-volatile memory is optional becausesystems can be created with all applicable data available in memory. Atypical computer system will usually include at least a processor,memory, and a device (e.g., a bus) coupling the memory to the processor.

Software is typically stored in the non-volatile memory and/or the driveunit. Indeed, storing and entire large program in memory may not even bepossible. Nevertheless, it should be understood that for software torun, if necessary, it is moved to a computer readable locationappropriate for processing, and for illustrative purposes, that locationis referred to as the memory in this paper. Even when software is movedto the memory for execution, the processor will typically make use ofhardware registers to store values associated with the software, andlocal cache that, ideally, serves to speed up execution. As used herein,a software program is assumed to be stored at any known or convenientlocation (from non-volatile storage to hardware registers) when thesoftware program is referred to as “implemented in a computer-readablemedium.” A processor is considered to be “configured to execute aprogram” when at least one value associated with the program is storedin a register readable by the processor.

The bus also couples the processor to the network interface device. Theinterface can include one or more of a modem or network interface. Itwill be appreciated that a modem or network interface can be consideredto be part of the computer system 1900. The interface can include ananalog modem, ISDN modem, cable modem, token ring interface, satellitetransmission interface (e.g., “direct PC”), or other interfaces forcoupling a computer system to other computer systems. The interface caninclude one or more input and/or output devices. The I/O devices caninclude, by way of example but not limitation, a keyboard, a mouse orother pointing device, disk drives, printers, a scanner, and other inputand/or output devices, including a display device. The display devicecan include, by way of example but not limitation, a cathode ray tube(CRT), liquid crystal display (LCD), or some other applicable known orconvenient display device. For simplicity, it is assumed thatcontrollers of any devices not depicted in the example of FIG. 19 residein the interface.

In operation, the computer system 1900 can be controlled by operatingsystem software that includes a file management system, such as a diskoperating system. One example of operating system software withassociated file management system software is the family of operatingsystems known as Windows® from Microsoft Corporation of Redmond, Wash.,and their associated file management systems. Another example ofoperating system software with its associated file management systemsoftware is the Linux™ operating system and its associated filemanagement system. The file management system is typically stored in thenon-volatile memory and/or drive unit and causes the processor toexecute the various acts required by the operating system to input andoutput data and to store data in the memory, including storing files onthe non-volatile memory and/or drive unit.

Some portions of the detailed description may be presented in terms ofalgorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of operations leading to adesired result. The operations are those requiring physicalmanipulations of physical quantities. Usually, though not necessarily,these quantities take the form of electrical or magnetic signals capableof being stored, transferred, combined, compared, and otherwisemanipulated. It has proven convenient at times, principally for reasonsof common usage, to refer to these signals as bits, values, elements,symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or “generating” or the like, refer to theaction and processes of a computer system, or similar electroniccomputing device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system's registersand memories into other data similarly represented as physicalquantities within the computer system memories or registers or othersuch information storage, transmission or display devices.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct more specializedapparatus to perform the methods of some embodiments. The requiredstructure for a variety of these systems will appear from thedescription below. In addition, the techniques are not described withreference to any particular programming language, and variousembodiments may thus be implemented using a variety of programminglanguages.

In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment.

The machine may be a server computer, a client computer, a personalcomputer (PC), a tablet PC, a laptop computer, a set-top box (STB), apersonal digital assistant (PDA), a cellular telephone, an iPhone, aBlackberry, a processor, a telephone, a web appliance, a network router,switch or bridge, or any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine.

While the machine-readable medium or machine-readable storage medium isshown in an exemplary embodiment to be a single medium, the term“machine-readable medium” and “machine-readable storage medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized or distributed off-line database, and/or associated cachesand servers) that store the one or more sets of instructions. The term“machine-readable medium” and “machine-readable storage medium” shallalso be taken to include any medium that is capable of storing, encodingor carrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies ormodules of the presently disclosed technique and innovation.

In general, the routines executed to implement the embodiments of thedisclosure, may be implemented as part of an operating system or aspecific application, component, program, object, module or sequence ofinstructions referred to as “computer programs.” The computer programstypically comprise one or more instructions set at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processing units or processors in acomputer, cause the computer to perform operations to execute elementsinvolving the various aspects of the disclosure.

Moreover, while embodiments have been described in the context of fullyfunctioning computers and computer systems, those skilled in the artwill appreciate that the various embodiments are capable of beingdistributed as a program product in a variety of forms, and that thedisclosure applies equally regardless of the particular type of machineor computer-readable media used to actually effect the distribution.

Further examples of machine-readable storage media, machine-readablemedia, or computer-readable (storage) media include but are not limitedto recordable type media such as volatile and non-volatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital VersatileDisks, (DVDs), etc.), among others, and transmission type media such asdigital and analog communication links.

In some circumstances, operation of a memory device, such as a change instate from a binary one to a binary zero or vice-versa, for example, maycomprise a transformation, such as a physical transformation. Withparticular types of memory devices, such a physical transformation maycomprise a physical transformation of an article to a different state orthing. For example, but without limitation, for some types of memorydevices, a change in state may involve an accumulation and storage ofcharge or a release of stored charge. Likewise, in other memory devices,a change of state may comprise a physical change or transformation inmagnetic orientation or a physical change or transformation in molecularstructure, such as from crystalline to amorphous or vice versa. Theforegoing is not intended to be an exhaustive list in which a change instate for a binary one to a binary zero or vice-versa in a memory devicemay comprise a transformation, such as a physical transformation.Rather, the foregoing is intended as illustrative examples.

A storage medium typically may be non-transitory or comprise anon-transitory device. In this context, a non-transitory storage mediummay include a device that is tangible, meaning that the device has aconcrete physical form, although the device may change its physicalstate. Thus, for example, non-transitory refers to a device remainingtangible despite this change in state.

Remarks

The foregoing description of various embodiments of the claimed subjectmatter has been provided for the purposes of illustration anddescription. It is not intended to be exhaustive or to limit the claimedsubject matter to the precise forms disclosed. Many modifications andvariations will be apparent to one skilled in the art. Embodiments werechosen and described in order to best describe the principles of theinvention and its practical applications, thereby enabling othersskilled in the relevant art to understand the claimed subject matter,the various embodiments, and the various modifications that are suitedto the particular uses contemplated.

While embodiments have been described in the context of fullyfunctioning computers and computer systems, those skilled in the artwill appreciate that the various embodiments are capable of beingdistributed as a program product in a variety of forms, and that thedisclosure applies equally regardless of the particular type of machineor computer-readable media used to actually effect the distribution.

Although the above Detailed Description describes certain embodimentsand the best mode contemplated, no matter how detailed the above appearsin text, the embodiments can be practiced in many ways. Details of thesystems and methods may vary considerably in their implementationdetails, while still being encompassed by the specification. As notedabove, particular terminology used when describing certain features oraspects of various embodiments should not be taken to imply that theterminology is being redefined herein to be restricted to any specificcharacteristics, features, or aspects of the invention with which thatterminology is associated. In general, the terms used in the followingclaims should not be construed to limit the invention to the specificembodiments disclosed in the specification, unless those terms areexplicitly defined herein. Accordingly, the actual scope of theinvention encompasses not only the disclosed embodiments, but also allequivalent ways of practicing or implementing the embodiments under theclaims.

The language used in the specification has been principally selected forreadability and instructional purposes, and it may not have beenselected to delineate or circumscribe the inventive subject matter. Itis therefore intended that the scope of the invention be limited not bythis Detailed Description, but rather by any claims that issue on anapplication based hereon. Accordingly, the disclosure of variousembodiments is intended to be illustrative, but not limiting, of thescope of the embodiments, which is set forth in the following claims.

1. A method to prevent corruption of a central database associated witha server using a plurality of off-line databases associated with aplurality of off-line devices, the method comprising: synchronizing theplurality of off-line databases associated with the plurality ofoff-line devices and the central database associated with the serverwithout corrupting the central database by incorrectly associating afirst log in an off-line database in the plurality of off-line databaseswith an incorrect identification (ID), the first log comprising a firstplurality of records, wherein a record in the first plurality of recordscomprises at least one of a name, an age, a gender, a region of origin,a barcode ID, or a radio frequency ID, said synchronizing comprising:maintaining at least two identifications (IDs) associated with the firstlog, wherein a first ID is unique to the central database, and a secondID is provided by a user; recording a first timeseries of the first logcomprising a change to the first log at a point in time, and the pointin time at which the change to the first log was made; retrieving from asecond database a second log associated with the first ID and a secondtimeseries of the second log, the second log comprising a secondplurality of records, wherein the second database comprises at least oneof the central database or a second off-line database in the pluralityof off-line databases; and determining a correct ID unique to thecentral database to associate with the first log by: determining whetherthe first log corresponds to a same respondent as the second log bycomparing the first timeseries and the second timeseries, and inresponse to determining that the first log does not correspond to thesame respondent as the second log, assigning a third ID to the firstlog, wherein the third ID and the first ID are different.
 2. The methodof claim 1, comprising: correcting the first timeseries of the first logby performing a low-pass filter on the first timeseries to remove anunlikely record in the first plurality of records.
 3. A methodcomprising: synchronizing a plurality of off-line databases associatedwith a plurality of off-line devices and a central database associatedwith a server without corrupting the central database by incorrectlyassociating a first log entered by a user into an off-line database inthe plurality of off-line databases with an incorrect identification(ID), the first log comprising a database entry of an attributeassociated with a respondent, said synchronizing comprising: maintainingat least two identifications (IDs) associated with the first log,wherein a first ID is unique to the central database, and a second ID isprovided by the user; recording a first timeseries of the first logcomprising a modification to the first log at a point in time, and thepoint in time at which the modification to the first log was made; anddetermining a correct ID unique to the central database to associatewith the first log by: determining whether the first log corresponds toa same respondent as a log associated with the first ID in the centraldatabase by comparing the first timeseries of the first log and atimeseries of the log associated with the first ID in the centraldatabase, and in response to determining that the first log does notcorrespond to the same respondent as the log associated with the firstID in the central database, assigning a third ID to the first log,wherein the third ID and the first ID are different.
 4. The method ofclaim 3, wherein the first log comprises a first plurality of records;said determining the correct ID unique to the central database toassociate with the first log: retrieving from a second off-line databasea second log associated with the first ID, the second log comprising asecond plurality of records, wherein the second off-line databasecomprises at least one of the central database or the second off-linedatabase; based on the first plurality of records, formulating acriterion indicating that the first log and the second log are the same;based on the first log and the second log determining that the criterionis not satisfied; and associating the first log with the third ID uniqueto the central database, wherein the third ID is the correct ID uniqueto the central database, and wherein the third ID and the first ID aredifferent.
 5. The method of claim 4, said formulating the criterioncomprising: based on the first plurality of records and a timevariability associated with each record in the first plurality ofrecords, creating a prioritized list of records, wherein a record leastlikely to change over time is at the top of the prioritized list ofrecords; and formulating the criterion to state that when at least onerecord at the top of the prioritized list of records is differentbetween the first log and the second log, the first log and the secondlog are different.
 6. The method of claim 3, wherein the first logcomprises a first plurality of records; said determining the correct IDunique to the central database to associate with the first log:retrieving from a second off-line database a second log associated witha fourth ID, the second log comprising a second plurality of records;based on the first plurality of records, formulating a criterionindicating that the first log and the second log are the same; based onthe first log and the second log determining that the criterion issatisfied; and associating the first log and the second log with thefirst ID unique to the central database, wherein the first ID is thecorrect ID unique to the central database.
 7. The method of claim 6,said formulating the criterion comprising: determining that a record inthe first plurality of records and a corresponding record in the secondplurality of records correspond to each other; determining a timevariability associated with the record in the first plurality of recordsand the corresponding record in the second plurality of records, whereinthe time variability specifies a time period during which the record andthe corresponding record are expected to remain unchanged; retrieving atime when the record was entered and a second time when thecorresponding record was entered; and formulating the criterion to statethat when a predetermined number of records between the first pluralityof records and the second plurality of records match, the first log andthe second log are the same.
 8. The method of claim 7, said determiningthat the criterion is satisfied: determining that the time when therecord was entered and the second time when the corresponding record wasentered are within the time period during which the record in thecorresponding record are expected to remain unchanged; and determiningthat the record and the corresponding record match.
 9. The method ofclaim 3, the first log comprising at least one record, wherein a recordcomprises at least one of a name, an age, a gender, a region of origin,a barcode ID, or a radio frequency ID.
 10. The method of claim 9,comprising: receiving the record entered by the user into the off-linedatabase; designating the record as the second ID.
 11. The method ofclaim 3, comprising: generating a random number; and generating thefirst ID by a device associated with the off-line database by combininga device ID, a time when collection of the first log started, and therandom number.
 12. The method of claim 11, comprising: generating asecond random number; and combining the time when the off-line databasewas initiated on the device and the second random number to obtain thedevice ID.
 13. The method of claim 3, comprising: detecting a presenceof a second device in the plurality of off-line devices; synchronizingthe off-line database with a second off-line database associated withthe second device.
 14. The method of claim 13, said synchronizingcomprising: receiving an encrypted second plurality of records from thesecond off-line database; upon determining that the user associated withthe off-line database has access to the encrypted second plurality ofrecords, decrypting the encrypted second plurality of records to obtaina second plurality of records; and synchronizing the second plurality ofrecords with the off-line database.
 15. The method of claim 3,comprising: detecting an availability of an Internet connection; andsynchronizing the off-line database with the central database.
 16. Themethod of claim 3, comprising: receiving from at least two off-linedatabases a plurality of time-stamped modifications to the first log, atime-stamped modification to the first log in the plurality oftime-stamped modifications to the first log comprising a value and atime at which the value was entered; and recording the first timeseriesof the first log, wherein the first timeseries orders the plurality oftime-stamped modifications to the first log from oldest to most recent.17. A system comprising: a central database associated with a server; aplurality of off-line databases associated with a plurality of off-linedevices; a processor; a storage medium storing computer-executableinstructions that, when executed by the processor, cause the system toperform a computer-implemented operation, the instructions comprisingthe instructions for synchronizing the plurality of off-line databasesassociated with the plurality of off-line devices and the centraldatabase associated with the server without corrupting the centraldatabase by incorrectly associating a first log entered by a user intoan off-line database in the plurality of off-line databases with anincorrect identification (ID), the first log comprising a database entryof an attribute associated with a respondent, the instructions forsynchronizing comprising: instructions for maintaining at least twoidentifications (IDs) associated with the first log, wherein a first IDis unique to the central database, and a second ID is provided by theuser; instructions for recording a first timeseries of the first logcomprising a modification to the first log at a point in time, and thepoint in time at which the modification to the first log was made; andinstructions for, based on the first timeseries of the first log,determining a correct ID unique to the central database to associatewith the first log by: determining whether the first log corresponds toa same respondent as a log associated with the first ID in the centraldatabase by comparing the first timeseries of the first log and atimeseries of the log associated with the first ID in the centraldatabase, and in response to determining that the first log does notcorrespond to the same respondent as the log associated with the firstID in the central database, assigning a third ID to the first log,wherein the third ID and the first ID are different.
 18. The system ofclaim 17, the first log comprising a first plurality of records;instructions for determining the correct ID unique to the centraldatabase to associate with the first log comprising: instructions forretrieving from a second off-line database a second log associated withthe first ID, the second log comprising a second plurality of records,wherein the second off-line database comprises at least one of thecentral database or the second off-line database in the plurality ofoff-line databases; instructions for, based on the first plurality ofrecords, formulating a criterion indicating that the first log and thesecond log are the same; instructions for, based on the first log andthe second log determining that the criterion is not satisfied; andinstructions for associating the first log with the third ID unique tothe central database, wherein the third ID is the correct ID unique tothe central database, and wherein the third ID and the first ID aredifferent.
 19. The system of claim 18, the instructions for formulatingthe criterion comprising: instructions for, based on the first pluralityof records and a time variability associated with each record in thefirst plurality of records, creating a prioritized list of records,wherein a record least likely to change over time is at the top of theprioritized list of records; and instructions for formulating thecriterion to state that when at least one record at the top of theprioritized list of records is different between the first log and thesecond log, the first log and the second log are different.
 20. Thesystem of claim 18, the instructions for associating the first log withthe third ID unique to the central database comprising: instructions forretrieving from a third off-line database a third log associated withthe third ID, the third log comprising a third plurality of records;instructions for, based on the first plurality of records, formulatingthe criterion indicating that the first log and the third log are thesame; instructions for, based on the first log and the third logdetermining that the criterion is satisfied; and instructions for,associating the first log and the third log with the third ID unique tothe central database.
 21. The system of claim 20, instructions forformulating the criterion comprising: instructions for determining acorrespondence between a record in the first plurality of records and acorresponding record in the third plurality of records; instructions fordetermining a time variability associated with the record in the firstplurality of records and the corresponding record in the third pluralityof records, wherein the time variability specifies a time period duringwhich the record and the corresponding record are expected to remainunchanged; instructions for retrieving a time when the record wasentered and a third time when the corresponding record was entered; andinstructions for formulating the criterion to state that when apredetermined number of records between the first plurality of recordsand the third plurality of records match, the first log and the thirdlog are the same.
 22. The system of claim 21, instructions fordetermining that the criterion is satisfied comprising: instructions fordetermining that the time when the record was entered and the third timewhen the corresponding record was entered are within the time periodduring which the record and the corresponding record are expected toremain unchanged; and determining that the record and the correspondingrecord match.
 23. The system of claim 17, the first log comprising atleast one record, wherein a record comprises at least one of a name, anage, a gender, a region of origin, a barcode ID, or a radio frequencyID.
 24. The system of claim 23, comprising: instructions for receivingthe record entered by the user into the off-line database; instructionsfor designating the record as the second ID.
 25. The system of claim 17,comprising: instructions for generating a random number; andinstructions for generating the first ID by a device associated with theoff-line database by combining a device ID, a time when collection ofthe first log started, and the random number.
 26. The system of claim25, comprising: instructions for generating a second random number; andinstructions for combining the time when the off-line database wasinitiated on the device and the second random number to obtain thedevice ID.
 27. The system of claim 17, comprising: instructions fordetecting a presence of a second device in the plurality of off-linedevices; and instructions for synchronizing the off-line database with asecond off-line database associated with the second device.
 28. Thesystem of claim 17, comprising: instructions for receiving an encryptedsecond log from a second database comprising at least one of the centraldatabase or a second off-line database in the plurality of off-linedatabases; instructions for, upon determining that the user associatedwith the off-line database has access to the encrypted second log,decrypting the encrypted second log to obtain a second log; andinstructions for synchronizing the second log with the off-linedatabase.
 29. The system of claim 17, comprising: instructions forreceiving from at least two off-line databases a plurality oftime-stamped modifications to the first log, a time-stamped modificationto the first log in the plurality of time-stamped modifications to thefirst log comprising a value and a time at which the value was entered;and instructions for recording the first timeseries of the first log,wherein the first timeseries orders the plurality of time-stampedmodifications to the first log from oldest to most recent.
 30. Thesystem of claim 17, comprising: instructions for detecting an unusuallog in the first timeseries of the first log; and instructions forremoving the unusual log from the first timeseries of the first log. 31.A method comprising: synchronizing a plurality of off-line databasesassociated with a plurality of off-line devices and a central databaseassociated with a server without corrupting the central database byincorrectly associating a log entered by a user into an off-linedatabase in the plurality of off-line databases with an incorrectidentification (ID), the log comprising a database entry of an attributeassociated with a respondent, said synchronizing comprising: recording atimeseries of the log comprising a modification to the log at a point intime, and the point in time at which the modification to the log wasmade; and determining a correct ID unique to the central database toassociate with the log by: determining whether the log corresponds to asame respondent as a log associated with the first ID in the centraldatabase by comparing the timeseries of the log and a timeseries of thelog associated with the first ID in the central database, and inresponse to determining that the log does not correspond to the samerespondent as the log associated with the first ID in the centraldatabase, assigning a third ID to the first log, wherein the third IDand the first ID are different.